using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Acme.BookStore.Domain.Entities;
using Volo.Abp.Domain.Repositories;

namespace Acme.BookStore.Products
{
    public interface IShopWhereRepository : IRepository<ShopWhere>
    {
        Task<List<ShopWhere>> GetListAsync(
            int skipCount,
            int maxResultCount,
            string sorting,
            string filter = null
        );

        Task<List<ShopWhere>> SearchByNameAsync(
            int skipCount,
            int maxResultCount,
            string sorting,
            string nameKeyword
        );
        
        Task<List<ShopWhere>> GetListAsync(
            int skipCount,
            int maxResultCount,
            string sorting,
            string filter = null,
            string ownerCode = null,
            string productCode = null,
            string productName = null
        );

        Task<long> GetCountAsync(string filter = null);
        
        Task<long> GetCountByNameAsync(string nameKeyword);
        
        Task<long> GetCountAsync(
            string filter = null,
            string ownerCode = null,
            string productCode = null,
            string productName = null
        );
    }
} 